home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / othergnu / ms.zoo / crtsg.s < prev    next >
Text File  |  1989-04-27  |  1KB  |  42 lines

  1. /
  2. / ST C run time startup.
  3. /
  4. / Stripped version for gem tos/aes/vdi environment:
  5. /    main called with argc == argv == envp == 0,
  6. /    getenv will not work
  7. /    file handle 2 left pointing where ever it does,
  8. /
  9.     .prvd
  10.     .globl    _stksize_
  11.     .globl    _start_
  12. /
  13. /    a1 = end of bssd
  14. /    a5 = base page pointer
  15. /    _stksize_ = a long size for stack allocation
  16. /        overwritten at runtime to make a stack limit
  17. /    _start_ = program text base
  18. /
  19.  
  20.     .shri
  21. _start_:
  22.     movea.l    4(a7), a5        / Fetch base page pointer
  23.     movea.l    24(a5), a1        / Fetch bss base
  24.     adda.l    28(a5), a1        / + size of bss
  25. / Allocate stack, a1 points beyond vectors
  26.     adda.l    _stksize_, a1        / Allocate _stksize_ bytes of stack
  27.     movea.l    a1, a7            / Set the initial stack.
  28. / Release unused memory to the system pool.
  29.     suba.l    a5, a1            / Compute size of retained memory
  30.     move.l    a1, -(a7)
  31.     move.l    a5, -(a7)        / Base of retained memory
  32.     clr    -(a7)            / Must be zero
  33.     move    $0x4A, -(a7)        / Mshrink opcode
  34.     trap    $1            / Gemdos
  35.     adda    $12, a7            / Pop arguments
  36. / Call main(argc, argv, envp)
  37.     suba    a6, a6            / Zero frame pointer
  38.     jsr    main_            / Call main line
  39. / Exit with return from main
  40.     clr    -(a7)            / Pterm0()
  41.     trap    $1
  42.